////////////////////////////////////////////////////////////////////////////////

#ifndef _SBULLET_H_
#include "sbullet.h"
#endif

////////////////////////////////////////////////////////////////////////////////

#ifndef _SPLAYER_H_
#include "splayer.h"
#endif

#ifndef _SERVER_H_
#include "server.h"
#endif

////////////////////////////////////////////////////////////////////////////////


SBullet::SBullet( int _ID,
                  const Point& _position,
                  const Vector& _shootImpulse,
                  int _playerID,
                  int _damage )
: SGameObject(_ID, _position),
  m_PlayerID(_playerID),
  m_Damage(_damage),
  m_IsDestroyed(false)
{
    Server::Instance().Battlefield().Physics().CreateBullet(*this, _shootImpulse);
}


////////////////////////////////////////////////////////////////////////////////


SBullet::~SBullet()
{
}


////////////////////////////////////////////////////////////////////////////////


int SBullet::GetPlayerID() const
{
    return m_PlayerID;
}


////////////////////////////////////////////////////////////////////////////////


void SBullet::Collision( SGameObject& _obj )
{
    _obj.CollideWithBullet(*this);
    m_IsDestroyed = true;
}


////////////////////////////////////////////////////////////////////////////////


void SBullet::CollideWithPlayer( SPlayer& _player )
{
    _player.CollideWithBullet(*this);
    m_IsDestroyed = true;
}


////////////////////////////////////////////////////////////////////////////////


int SBullet::GetDamage() const
{
    return m_Damage;
}


////////////////////////////////////////////////////////////////////////////////


bool SBullet::IsDestroyed() const
{
    return m_IsDestroyed;
}


////////////////////////////////////////////////////////////////////////////////
